﻿// wait message
$(document).ajaxStart(function () {
    $("#ajaxLoading").center().delay(500).show(0);
});

$(document).ajaxStop(function () {
    $("#ajaxLoading").dequeue().hide();
});

// 한글 입력 금지 onkeydown 핸들러
function noHangul(e) {
    var keycode;
    if (window.event) keycode = window.event.keyCode;
    else if (e) keycode = e.which;
    else return true;

    if (keycode == 229) return false; // 한글 입력 방지
    return true;
}

// ajax 호출 후 에러 발생시, 에러메시지를 새 창으로 보여줌
function showErrorMessageWindow(responseText) {
    // 개발 중일 때만, 이 기능 사용함.
    w = window.open();
    w.document.write(responseText);
    //
}

// jquery ajax load 함수 호출할 때 사용할 에러 핸들러 콜백 함수
function OnAjaxLoadComplete(responseText, textStatus, xmlHttpRequest) {
    if (textStatus !== "success") {
        showErrorMessageWindow(responseText);
        var s = "서버와 통신 장애가 발생했습니다" +
                "\n status: " + textStatus;
        alert(s);
    }
}

// ajax 호출을 하고, 호출 결과가 성공이면, 리턴된 URL로 리다이렉트 함
function AjaxJsonCall_Redirect(url, param, confirmMessage) {
    if (typeof confirmMessage != 'undefined') {
        if (!confirm(confirmMessage)) return;
    }
    $.ajax({
        type: "post", dataType: "json",
        url: url, data: param, 
        error: AjaxJsonErrorHandler,
        success:
            function (data, textStatus, jqXHR) {
                if (data.success) {
                    window.location = data.url;
                } else
                    alert("작업 실패\n\n" + data.message);
            }
    });
    return false;
}

// 위의 AjaxJsonCall_XXX 에서 사용된 에러 핸들러 콜백 함수
function AjaxJsonErrorHandler(jqXHR, textStatus, message) {
    showErrorMessageWindow(jqXHR.responseText);
    var s = "서버와 통신 장애가 발생했습니다" +
            "\n status: " + textStatus +
            "\n message: " + message;
    alert(s);
}

// ajax 호출을 한 다음, 호출 결과를 파라미터로 javascript 콜백 함수를 호출함
function AjaxJsonCall_Callback(url, param, callback, confirmMessage) {
    if (typeof confirmMessage != 'undefined') {
        if (!confirm(confirmMessage)) return;
    }
    $.ajax({
        type: "post", dataType: "json",
        url: url, data: param,
        error: AjaxJsonErrorHandler,
        success:
            function (data, textStatus, jqXHR) {
                if (data.success) {
                    if (typeof callback != 'undefined')
                        callback(data, textStatus, jqXHR);
                } else
                    alert("작업 실패\n\n" + data.message);
            }
    });
    return false;
}

// 화면 중앙에 위치시키는 jquery 확장 메소드
jQuery.fn.center = function () {
    this.css("position", "absolute");
    this.css("top", Math.max(0, (($(window).height() - $(this).height()) / 2) + $(window).scrollTop()) + "px");
    this.css("left", Math.max(0, (($(window).width() - $(this).width()) / 2) + $(window).scrollLeft()) + "px");
    return this;
}


